13000 PRINT:INPUT "Current money market fund interest rate (%)";ANINT
13100 IF ANINT<1 OR ANINT>100 THEN ANLMFR=0.1 ELSE ANLMFR=ANINT/100
13200 RESPMSG$="PRESS A NUMBER KEY CORRESPONDING TO YOUR SELECTION OR PRESS <Esc> TO QUIT."
13300 DIM GRAPH$(132)
13400 DIM MTH$(12):MTH$(1)="JAN.":MTH$(2)="FEB.":MTH$(3)="MAR.":MTH$(4)="APR.":MTH$(5)="MAY.":MTH$(6)="JUN.":MTH$(7)="JUL.":MTH$(8)="AUG.":MTH$(9)="SEP.":MTH$(10)="0CT.":MTH$(11)="NOV.":MTH$(12)="DEC."
13500 ON ERROR GOTO 13700' -----------------select task-----------------------
13600 OPEN "pltseqfl.dat" FOR INPUT AS #3:GOTO 13800
13700 NOSEQ=1:RESUME 13800
13800 ON ERROR GOTO 0
13900 ON ERROR GOTO 14000:OPEN "pltstkfl.doc" FOR INPUT AS #1:CLOSE #1:GOTO 14100
14000 NODOC=1:RESUME 14100
14100 ON ERROR GOTO 0:IF NOSEQ AND NODOC THEN 16300
14200 PRINT:PRINT "Do you want to ";
14300 IF NODOC THEN 14600
14400 PRINT "(1): read the documentation file for this program,
14500 PRINT " or (2): plot a single securities file,
14600 IF NODOC=0 THEN 14700 ELSE PRINT "(2): plot a single securities file,
14700 IF NOSEQ THEN 15000
14800 PRINT " or (3): plot all files for a single type of security,
14900 PRINT " or (4): plot all security files,
15000 PRINT " or <Esc> to quit?":IF NOSEQ THEN 15300
15100 PRINT " NOTE: The security must be listed in the file PLTSEQFL.DAT
15200 PRINT " in order to be plotted in options 3 or 4.
15300 X$=INKEY$:IF X$="" THEN 15300 ELSE IF X$=CHR$(27) THEN 17200 ELSE AA=VAL(X$)
15400 IF AA<1 OR AA>4 THEN PRINT:PRINT RESPMSG$:GOTO 15300
15500 IF NOSEQ THEN IF AA<1 OR AA>2 THEN PRINT:PRINT RESPMSG$:GOTO 15300
23100 LPRINT "A = average closing value of all data plotted =";:LPRINT USING "####.###";AVERAGE;
23200 LPRINT " The numbers to the right of the dates below are the daily closing prices."
23300 LPRINT "The lowest low plotted is ";:LPRINT USING "####.###";MINLOW;
23400 LPRINT ". The highest high plotted is ";:LPRINT USING "####.###";MAXHIGH;
23500 LPRINT ". That high is ";:LPRINT USING "####.#";(MAXHIGH-MINLOW)/MINLOW*100;:LPRINT "% greater than that low."
23600 LPRINT CHR$(27) CHR$(45) CHR$(1);
23700 LPRINT " M = The value of money equal to the average closing value at the start of the plot, compounded daily at ";:LPRINT USING "###.##";ANLMFR*100;:LPRINT "%/yr."
23800 LPRINT CHR$(27) CHR$(45) CHR$(0);
23900 IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
24000 MULTIPLIER=130/RANGE
24100 OFFSET=MINLOW*MULTIPLIER-1
24200 AV=INT(MULTIPLIER*AVERAGE-OFFSET)
24300 MFND=AVERAGE:MFRATE=ANLMFR/255
24400 GOSUB 41000
24500 IF EOF(1) THEN 27700' ---------plot price data - C = 1 or 2------------
24600 MFND=MFND+MFND*MFRATE
24700 IF MFND>MAXHIGH THEN MFND=MAXHIGH
24800 MF=INT(MULTIPLIER*MFND-OFFSET)
24900 INPUT #1, DAT$,VOL,HIGH,LOW,CLSE
25000 IF HIGH=0 THEN HI=AV:GOTO 25200
25100 HI=INT(MULTIPLIER*HIGH-OFFSET)
25200 IF CLSE=0 THEN CL=AV:GOTO 25400
25300 CL=INT(MULTIPLIER*CLSE-OFFSET)
25400 IF LOW=0 THEN LO=AV:GOTO 25800
25500 LO=INT(MULTIPLIER*LOW-OFFSET)
25600 IF LO<40 THEN TEXT=1
25700 IF HI>90 THEN TEXT=0
25800 GOSUB 10100 ' decompose date
25900 GOSUB 10800 ' get DAYNAME$
26000 IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." AND TEXT=0 THEN LPRINT STRING$(27," ");:GOTO 26300
29700 LPRINT "A = average " LOWER$ " price of all data plotted =";:LPRINT USING "####.###";AVERAGE;
29800 LPRINT " The numbers to the right of the dates below are the daily " LOWER$ " prices."
29900 LPRINT "The lowest " LOWER$ " plotted is ";:LPRINT USING "####.###";MINBID;
30000 LPRINT ". The highest " HIGHER$ " price plotted is ";:LPRINT USING "####.###";MAXASK;
30100 LPRINT ". That high is ";:LPRINT USING "####.#";(MAXASK-MINBID)/MINBID*100;:LPRINT "% greater than that low."
30200 LPRINT CHR$(27) CHR$(45) CHR$(1);
30300 LPRINT " M = The value of money equal to the average " LOWER$ " value at the start of the plot, compounded daily at ";:LPRINT USING "###.##";ANLMFR*100;:LPRINT "%/yr."
30400 LPRINT CHR$(27) CHR$(45) CHR$(0);
30500 IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
30600 MULTIPLIER=130/RANGE
30700 OFFSET=MINBID*MULTIPLIER-1
30800 AV=INT(MULTIPLIER*AVERAGE-OFFSET)
30900 MFND=AVERAGE:MFRATE=ANLMFR/255
31000 GOSUB 41000
31100 IF EOF(1) THEN 34300' ---------plot price data - C = 3 or 5------------
31200 MFND=MFND+MFND*MFRATE
31300 MF=INT(MULTIPLIER*MFND-OFFSET)
31400 INPUT #1, DAT$,VOL,BID,ASK,DUMP
31500 IF ASK=0 THEN AS=AV:GOTO 31700
31600 AS=INT(MULTIPLIER*ASK-OFFSET)
31700 IF BID=0 THEN BI=AV:GOTO 32100
31800 BI=INT(MULTIPLIER*BID-OFFSET)
31900 IF BI<40 THEN TEXT=1
32000 IF AS>90 THEN TEXT=0
32100 GOSUB 10100 ' decompose date
32200 GOSUB 10800 ' get DAYNAME$
32300 IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." AND TEXT=0 THEN LPRINT STRING$(27," ");:GOTO 32600
43500 LPRINT "P = PUT price. C = CALL price. U = closing price of underlying stock. L = U - C. T = U + P. S = strike price (from FILENAME).
43600 LPRINT " The numbers to the right of the dates below are L and T in that order. P, C, & L-U-S-T scales are completely independent.
43700 LPRINT "The lowest PUT is:";:LPRINT USING "####.###";MINPTT;
43800 LPRINT ". The highest PUT is:";:LPRINT USING "####.###";MAXPTT;
43900 LPRINT ". This is a ";:LPRINT USING "####.#";(MAXPTT-MINPTT)/MINPTT*100;:LPRINT "% increase or a ";:LPRINT USING "####.#";(MAXPTT-MINPTT)/MAXPTT*100;:LPRINT "% decrease."
44000 LPRINT CHR$(27) CHR$(45) CHR$(1);
44100 LPRINT "The lowest CALL is:";:LPRINT USING "####.###";MINCAL;
44200 LPRINT ". The highest CALL is:";:LPRINT USING "####.###";MAXCAL;
44300 LPRINT ". This is a ";:LPRINT USING "####.#";(MAXCAL-MINCAL)/MINCAL*100;:LPRINT "% increase or a ";:LPRINT USING "####.#";(MAXCAL-MINCAL)/MAXCAL*100;:LPRINT "% decrease."
44400 LPRINT CHR$(27) CHR$(45) CHR$(0);
44500 IF B=2 OR B=4 THEN LPRINT CHR$(27) CHR$(83) CHR$(INT(VAL(RIGHT$(TIME$,1))/5)) CHR$(27) CHR$(65) CHR$(4);
44600 MULTIPLCAL=105/RANGECAL
44700 MULTIPLPTT=105/RANGEPTT
44800 MULTIPLUUU=105/RANGEUUU
44900 OFFCAL=MINCAL*MULTIPLCAL-2
45000 OFFPTT=MINPTT*MULTIPLPTT-2
45100 OFFUUU=MINL*MULTIPLUUU-2
45200 STRIKE=VAL(RIGHT$(FILENAME$,2))
45300 ST=INT(MULTIPLUUU*STRIKE-OFFUUU)
45400 GOSUB 41000
45500 CL=INT(MULTIPLUUU*CLSE-OFFUUU)
45600 CA=INT(MULTIPLCAL*CAL-OFFCAL)
45700 LLL=CLSE-CAL
45800 LL=INT(MULTIPLUUU*LLL-OFFUUU)
45900 PT=INT(MULTIPLPTT*PTT-OFFPTT)
46000 TTT=CLSE+PTT
46100 TT=INT(MULTIPLUUU*TTT-OFFUUU)
46200 IF EOF(1) THEN 50200' ---------plot price data - C = 4 OPTIONS---------
46300 INPUT #1, DAT$,DUMP,CAL,PTT,CLSE
46400 IF CLSE=0 THEN 46600
46500 CL=INT(MULTIPLUUU*CLSE-OFFUUU)
46600 IF CAL=0 THEN 47100
46700 CA=INT(MULTIPLCAL*CAL-OFFCAL)
46800 IF CLSE=0 THEN 47100
46900 LLL=CLSE-CAL
47000 LL=INT(MULTIPLUUU*LLL-OFFUUU)
47100 IF PTT=0 THEN 47700
47200 LLL=CLSE-CAL
47300 PT=INT(MULTIPLPTT*PTT-OFFPTT)
47400 IF CLSE=0 THEN 47700
47500 TTT=CLSE+PTT
47600 TT=INT(MULTIPLUUU*TTT-OFFUUU)
47700 GOSUB 10100 ' decompose date
47800 GOSUB 10800 ' get DAYNAME$
47900 IF B=2 OR B=4 THEN IF DAYNAME$<>"FRI." THEN LPRINT STRING$(21," ");:GOTO 48300
48000 TEXT$=MTH$(M)+" "+D$+"###.###"
48100 IF CAL=0 AND PTT=0 AND CLSE=0 THEN LLL=0:TTT=0
48200 LPRINT USING TEXT$;LLL;:LPRINT USING "###.###";TTT;
48300 FOR N=1 TO 132:GRAPH$(N)=" ":NEXT
48400 IF CAL=0 AND PTT=0 AND CLSE=0 THEN LPRINT:GOTO 46200